package nc;

import java.util.*;

/**
 * 编写一个函数，传入一个int型数组，返回该数组能否分成两组，使得两组中各元素加起来的和相等，并且，所有5的倍数必须在其中一个组中，所有3的倍数在另一个组中（不包括5的倍数），能满足以上条件，返回true；不满足时返回false。
 */
public class Q21316 {

    public static boolean canSplit(int[] nums) {
        if (nums==null||nums.length == 0) {
            return true;
        }
        // 定义两个list
        int has5Sum = 0;
        int has3Sum = 0;
        List<Integer> remain = new ArrayList<>();
        for (int num : nums) {
            if (num % 5 == 0) {
                has5Sum += num;
            } else if (num % 3 == 0) {
                has3Sum += num;
            } else {
                remain.add(num);
            }
        }
        // 剩下的数要进行归类放入到两个数组中
        // 怎么去计算能否一样？
        int sum = 0;
        for (Integer integer : remain) {
            sum += integer;
        }
        sum = (sum + has3Sum - has5Sum);
        if (sum % 2 != 0) {
            return false;
        }
        int sum2 = sum + (has5Sum - has3Sum);
        for (int i = 0; i < remain.size(); i++) {
            int checkSum = 0;
            for (int j = i; j < remain.size(); j++) {
                checkSum += remain.get(i);
                if (checkSum == sum || checkSum == sum2) {
                    return true;
                }
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            final int i = scanner.nextInt();
            int[] arr = new int[i];
            for (int j = 0; j < i; j++) {
                arr[j] = scanner.nextInt();
            }
            System.out.println(canSplit(arr));
        }
    }

}
